package cn.cdeden.system.api.domain.bo;


import lombok.Data;

import java.io.Serial;
import java.io.Serializable;
import java.util.List;

@Data
public class RemoteDifyCreateByTextBo implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;
    /**
     * 文档名称
     */
    private String name;

    /**
     * 文档内容
     */
    private String text;

    /**
     * 索引方式
     * high_quality 高质量：使用 embedding 模型进行嵌入，构建为向量数据库索引
     * economy 经济：使用 keyword table index 的倒排索引进行构建
     */
    private String indexingTechnique;

    /**
     * 处理规则
     */
    private ProcessRule processRule;

    @Data
    public static class ProcessRule {

        /**
         * 清洗、分段模式 ，automatic 自动 / custom 自定义
         */
        private String mode;

        /**
         * 自定义规则（自动模式下，该字段为空）
         */
        private Rules rules;

        /**
         * 分段规则
         */
        private Segmentation segmentation;

        @Data
        public static class Rules {

            private List<PreProcessingRule> preProcessingRules;

            @Data
            public static class PreProcessingRule {
                /**
                 * 预处理规则的唯一标识符
                 * 枚举：
                 * remove_extra_spaces 替换连续空格、换行符、制表符
                 * remove_urls_emails 删除 URL、电子邮件地址
                 */
                private String id;

                /**
                 * 是否选中该规则，不传入文档 ID 时代表默认值
                 */
                private boolean enabled;
            }
        }

        @Data
        public static class Segmentation {
            /**
             * 自定义分段标识符，目前仅允许设置一个分隔符。默认为 \n
             */
            private String separator;

            /**
             * 自定义分段规则
             */
            private long maxTokens;
        }
    }
}
